#include <linux/irq.h>
#include <linux/sched.h>
#include <linux/init.h>
#include <linux/errno.h>

static void (*handle_arch_irq)(struct pt_regs *) = 0;

int __init set_handle_irq(void (*handle_irq)(struct pt_regs *))
{
    int ret = 0;

	if (handle_arch_irq)
    {
        ret = -EBUSY;
    }
	else
	{
	    handle_arch_irq = handle_irq;
	}

	return ret;
}

void generic_handle_arch_irq(struct pt_regs *regs)
{
    if (handle_arch_irq)
    {
        handle_arch_irq(regs);
    }
}

void __handle_arch_irq(struct pt_regs *regs)
{
    if (handle_arch_irq)
    {
        handle_arch_irq(regs);
    }
}
